/*
 * TacticaPedro.java
 *
 * Created on 11 de marzo de 2007, 13:35
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package futbol.tacticas.concursantes2007.Arakran;

import futbol.tacticas.*;
import futbol.tacticas.concursantes.Tactica;

import java.awt.Color;
import java.awt.Point;
import java.util.Vector;

/**
 *
 * @author Administrador
 */
public class TacticaArakran implements Tactica{
    
    private int J1  = 0;
    private int J2  = 1;
    private int J3  = 2;
    private int J4  = 3;
    private int J5  = 4;
    private int J6  = 5;
    private int J7  = 6;
    private int J8  = 7;
    private int J9  = 8;
    private int J10 = 9;
    private int J11 = 10;
    
    private int nValores[][]={
        {-150,0,6},    // 1
        {-110,-65,4},  // 2
        {-110,65,4},   // 3
        {-120,25,5},   // 4        
        {-70,-0,4},    // 5
        {-120,-25,5},  // 6
        {-30,70,5},    // 7
        {-50,0,6},     // 8
        {80,-80,7},    // 9
        {70,50,6},     // 10
        {100,-20,6}    // 11
    };

    public String getNombre(){
        return "Arakran";
    }
    
    public Color getColor1(){
        return Color.blue;
    }
    
    public Color getColor2(){
        return Color.blue;
    }
    
    public Color getColorNumero(){
        return Color.black;
    }
    
    public int getFuerza(int n){
        return nValores[n][2];
    }
    public int getXInicial(int n){
        return nValores[n][0];
    }
    
    public int getYInicial(int n){
        return nValores[n][1];
    }
    
    public Vector<Comando> getComandos(SituacionJugadores sj){
        Vector<Comando> comandos=new Vector<Comando>();
        Point[] contrarios = sj.getContrario();
        Point[] misJugadores = sj.getMisJugadores();
        Point bola = sj.getBola();        
        
        // Posicionamiento
        for (int n=0;n<11;n++)
            comandos.add(new ComandoIrA(n, nValores[n][0], nValores[n][1]));
        
        //Movimiento portero
        int y=(int)bola.getY();
        if (y<-30) y=-30;
        if (y>30) y=30;
        comandos.add(new ComandoIrA(J1,nValores[0][0], y));
               
        // 2 Marcar al tio
        int c2 = sj.getContrarioMasCerca(J2);
        if( (contrarios[c2].getX() < -40) && (contrarios[c2].getY() < -30) ) {
            double dx = 0;
            if( bola.getX() > contrarios[c2].getX() ) dx = 10; else dx = -10;
            comandos.add(new ComandoIrA(J2, contrarios[c2].getX()+dx, contrarios[c2].getY()));
        }
        // 3 Marcar al tio        
        int c3 = sj.getContrarioMasCerca(J3);
        if( (contrarios[c3].getX() < -40) && (contrarios[c3].getY() > 30) ) {
            double dx = 0;
            if( bola.getX() > contrarios[c3].getX() ) dx = 10; else dx = -10;
            comandos.add(new ComandoIrA(J3, contrarios[c3].getX()+dx, contrarios[c3].getY()));
        }
        // 5 Marcar al tio
        int c5 = sj.getContrarioMasCerca(J5);
        if( (contrarios[c5].getX() < -40) && (contrarios[c5].getY() < 30) && (contrarios[c5].getY() > -30) ) {
            comandos.add(new ComandoIrA(J5, contrarios[c5].getX()+10, contrarios[c5].getY()));
        }
        
        // Ir a la bola
        int nJug=sj.getMasCercanoDeBola();
        comandos.add(new ComandoIrA(nJug, bola.getX() , bola.getY()));      
        
        // Pases
        comandos.add( new ComandoTiroAPuerta(J1,-40));
        double x8 = misJugadores[J8].getX();
        double x2 = misJugadores[J2].getX();
        if( x2 > x8 ) comandos.add( new ComandoPase(J2,J9));
        else comandos.add( new ComandoPase(J2,J8));
        comandos.add( new ComandoPase(J3,J7));
        comandos.add( new ComandoPase(J4,J7));
        comandos.add( new ComandoPase(J6,J8));
        comandos.add( new ComandoPase(J5,J7));
        comandos.add( new ComandoPase(J8,J9));
        comandos.add( new ComandoPase(J7,J10));
        
        double x9 = misJugadores[J9].getX();
        if( x9 < 120 ) comandos.add( new ComandoTiroAPuerta(J9,20));
        else comandos.add( new ComandoPase(J9,J11));  
        
        double x10 = misJugadores[J10].getX();
        if( x10 < 130 ) comandos.add( new ComandoTiroAPuerta(J10,-15));
        else comandos.add( new ComandoPase(J10,J11));

        comandos.add( new ComandoTiroAPuerta(J11,-20));
               
        return comandos;
    }
    
}
